package com.yuw.objectstreamdemo;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import org.junit.jupiter.api.Test;

public class TestDriver {
	/**
	 * 对象输入流
	 */
	@Test
	public void test04() {

		try (
				// 使用对象流将内存中的 stu0的信息写出到外部文件中
				ObjectOutputStream oos = new ObjectOutputStream(
						new FileOutputStream("D:/temp/objstream/stu04_out.dat"));
				// 使用对象流将内存中的 stu0的信息写出到外部文件中
				ObjectInputStream ois = new ObjectInputStream(
						new FileInputStream("D:/temp/objstream/stu04_out.dat"));) {
			// 创建一个Student类的实例对象
			Student stu0 = new Student("张三", "15001", 80);
			// 将对象写出
			oos.writeObject(stu0);
			System.out.println("写出的对象内容：" + stu0);
			// 将对象读入

			Object stu01 = ois.readObject();

			System.out.println("读入的对象内容：" + stu01);

			System.out.println("stu0==stu01::" + (stu0 == stu01));

		} catch (IOException e) {
			// 异常处理
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 对象输入流
	 */
	@Test
	public void test03() {

		try (
				// 使用对象流将内存中的 stu0的信息写出到外部文件中
				ObjectOutputStream oos = new ObjectOutputStream(
						new FileOutputStream("D:/temp/objstream/stu02_out.dat"));
				// 使用对象流将内存中的 stu0的信息写出到外部文件中
				ObjectInputStream ois = new ObjectInputStream(
						new FileInputStream("D:/temp/objstream/stu02_out.dat"));) {
			// 创建一个Student类的实例对象
			Student stu0 = new Student("张三", "15001", 80);
			// 将对象写出
			oos.writeObject(stu0);
			System.out.println("写出的对象内容：" + stu0);
			// 将对象读入

			Object stu01 = ois.readObject();

			System.out.println("读入的对象内容：" + stu01);

			System.out.println("stu0==stu01::" + (stu0 == stu01));

		} catch (IOException e) {
			// 异常处理
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 对象输入流
	 */
	@Test
	public void test02() {

		try (
				// 使用对象流将内存中的 stu0的信息写出到外部文件中
				ObjectInputStream ois = new ObjectInputStream(
						new FileInputStream("D:/temp/objstream/stu01_out.dat"));) {

			// 将对象读入
			Object stu0 = ois.readObject();

			System.out.println("读入的对象内容：" + stu0);
		} catch (IOException e) {
			// 异常处理
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 对象输出流
	 */
	@Test
	public void test01() {
		// 创建一个Student类的实例对象
		Student stu0 = new Student("张三", "15001", 80);
		try (
				// 使用对象流将内存中的 stu0的信息写出到外部文件中
				ObjectOutputStream oos = new ObjectOutputStream(
						new FileOutputStream("D:/temp/objstream/stu01_out.dat"));) {

			// 将对象写出
			oos.writeObject(stu0);
			System.out.println("ok");
		} catch (IOException e) {
			// 异常处理
			e.printStackTrace();
		}
	}
}
